public class Day8 {
    // 5、最长回文子串
    public String longestPalindrome(String s) {
        // 中心扩散法
        int begin = 0,len = 0,n = s.length();
        for(int i = 0;i < n;i++) {
            // 对于奇数进行中心扩散
            int left = i,right = i;
            while(left >= 0 && right < n && s.charAt(left) == s.charAt(right)) {
                left--;
                right++;
            }
            if(right - left - 1 > len) {
                begin = left + 1;
                len = right - left - 1;
            }
            // 对于偶数进行中心扩散
            left = i;
            right = i + 1;
            while(left >= 0 && right < n && s.charAt(left) == s.charAt(right)) {
                left--;
                right++;
            }
            if(right - left - 1 > len) {
                begin = left + 1;
                len = right - left - 1;
            }
        }
        return s.substring(begin,begin + len);
    }
    // 67、二进制求和
    public String addBinary(String a, String b) {
        StringBuilder ret = new StringBuilder();
        int cur1 = a.length() - 1,cur2 = b.length() - 1;
        int t = 0; // 进位
        while(cur1 >= 0 || cur2 >= 0 || t != 0) {
            if(cur1 >= 0) {
                t += a.charAt(cur1--) - '0';
            }
            if(cur2 >= 0) {
                t += b.charAt(cur2--) - '0';
            }
            ret.append((char)('0' + (char)(t % 2)));
            t /= 2;
        }
        // 这时候ret是结果的反过来，我们需要掉个
        ret.reverse();
        return ret.toString();
    }

}
